﻿Type.registerNamespace("MoniMisi2");

MoniMisi2.Relacion = function(element) {
    MoniMisi2.Relacion.initializeBase(this, [element]);
    this.Clave = null;
    this.ListoCabecera = false;
    this.ListoDetalle = false;
    this.IdGrillaCabecera = null;
    this.GrillaCabecera = null;
    this.IdGrillaDetalle = null;
    this.GrillaDetalle = null;
    this.RefrescarEn = null;
    this.ColumnaClave = null;
    this.DelRefrescar = Function.createDelegate(this, this.Refrescar);
    this.DelEncontrado = Function.createDelegate(this, this.Encontrado);
    this.DelTimer = Function.createDelegate(this, this.Timer);


};

MoniMisi2.Relacion.prototype = {
    initialize: function() {
        MoniMisi2.Relacion.callBaseMethod(this, 'initialize');
        this.GrillaCabecera = $find(this.IdGrillaCabecera + "$Grilla");
        this.GrillaDetalle = $find(this.IdGrillaDetalle + "$Grilla");
        setInterval(this.DelTimer, 250);
        if (this.RefrescarEn == 0) {
            this.GrillaCabecera.add_Seleccionado(this.DelRefrescar)
        }
        if (this.RefrescarEn == 1) {
            this.GrillaCabecera.add_Elegido(this.DelRefrescar);
        };
    },

    dispose: function() {
        MoniMisi2.Relacion.callBaseMethod(this, 'dispose');
    },

    Timer: function() {
        if (this.GrillaCabecera.Datos != null) {
            if (this.GrillaCabecera.Datos.Registro != null) {
                if (this.Clave != this.GrillaCabecera.Datos.Registro[this.ColumnaClave]) {
                    this.Refrescar();
                }
            } else {
                if (!this.GrillaDetalle.Datos.OData) {
                    this.GrillaDetalle.Datos.Filtro = false
                } else {
                    if (!this.GrillaDetalle.Datos.Esperando && this.GrillaDetalle.Datos.Filtro != this.ColumnaClaveHijo + " eq -1") {
                        this.GrillaDetalle.Datos.Filtro = this.ColumnaClaveHijo + " eq -1";
                        this.GrillaDetalle.ReLeer();
                    }
                }
            }
        }
    },

    Refrescar: function(sender, e) {
        if (this.GrillaCabecera.Datos != null && this.GrillaDetalle.Datos != null) {
            if (!this.GrillaDetalle.Datos.Esperando && !this.GrillaCabecera.Datos.Esperando) {
                this.Clave = this.GrillaCabecera.Datos.Registro[this.ColumnaClave];
                if (!this.GrillaDetalle.Datos.OData) {
                    this.GrillaDetalle.Datos.Filtro = this.Clave
                } else {
                    this.GrillaDetalle.Datos.Filtro = this.ColumnaClaveHijo + " eq " + this.Clave;
                }
                this.GrillaDetalle.Datos.Limpiar()
                this.GrillaDetalle.Datos.add_Encontrado(this.DelEncontrado)
                this.GrillaDetalle.Datos.add_Fin(this.DelEncontrado)
                this.GrillaDetalle.Datos.Arribar()
            }
        }
    },

    Encontrado: function(sender, e) {
        this.GrillaDetalle.Datos.remove_Encontrado(this.DelEncontrado)
        this.GrillaDetalle.Datos.remove_Fin(this.DelEncontrado);
        this.GrillaDetalle.Refrescar();
        this.GrillaDetalle.SeleccionarPrimero();
    },

    get_IdGrillaCabecera: function() {
        return this.IdGrillaCabecera;

    },
    set_IdGrillaCabecera: function(value) {
        if (this.IdGrillaCabecera !== value) {
            this.IdGrillaCabecera = value;
            this.raisePropertyChanged('IdGrillaCabecera');
        }
    },
    get_IdGrillaDetalle: function() {
        return this.IdGrillaDetalle;

    },
    set_IdGrillaDetalle: function(value) {
        if (this.IdGrillaDetalle !== value) {
            this.IdGrillaDetalle = value;
            this.raisePropertyChanged('IdGrillaDetalle');
        }
    },
    get_RefrescarEn: function() {
        return this.RefrescarEn;

    },
    set_RefrescarEn: function(value) {
        if (this.RefrescarEn !== value) {
            this.RefrescarEn = value;
            this.raisePropertyChanged('RefrescarEn');
        }
    },

    get_ColumnaClave: function() {
        return this.ColumnaClave;

    },
    set_ColumnaClave: function(value) {
        if (this.ColumnaClave !== value) {
            this.ColumnaClave = value;
            this.raisePropertyChanged('ColumnaClave');
        }
    },

    get_ColumnaClaveHijo: function() {
        return this.ColumnaClaveHijo;

    },
    set_ColumnaClaveHijo: function(value) {
        if (this.ColumnaClaveHijo !== value) {
            this.ColumnaClaveHijo = value;
            this.raisePropertyChanged('ColumnaClaveHijo');
        }
    }

};


MoniMisi2.Relacion.registerClass('MoniMisi2.Relacion', Sys.UI.Control);

if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();